﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class NguoiDung : System.Web.UI.Page
{
    SqlParameter[] p;
    clsXuLy cs = new clsXuLy();
    string frmName = "frmNguoiDung";
    static int f_SuDung = 0, f_Them = 0, f_Sua = 0, f_Xoa = 0, f_XemTatCa = 0, f_InBaoCao = 0;
    public string Header = System.Configuration.ConfigurationSettings.AppSettings["Header"].ToString();
    static DataTable dt;
    
    protected void Page_Load(object sender, EventArgs e)
    {
         if (string.IsNullOrEmpty(Convert.ToString(Session["user"])))
            gstGetMess("Hết phiên làm việc, vui lòng đăng nhập để tiếp tục", "Default.aspx");
        else
        {
            if (!IsPostBack)
            {

                string idnguoidung = Session["IDUser"].ToString();
                string sql = "select SuDung,Them,Sua,Xoa,InBaoCao,XemTatCa from XDAPhanQuyen where IDnguoidung='" + idnguoidung + "' and tag='" + frmName + "'";

                DataTable dt2 = cs.GetData_Text(sql);
                if (dt2.Rows.Count > 0)
                {
                    f_SuDung = int.Parse(dt2.Rows[0]["SuDung"].ToString());
                    f_Them = int.Parse(dt2.Rows[0]["Them"].ToString());
                    f_Sua = int.Parse(dt2.Rows[0]["Sua"].ToString());
                    f_Xoa = int.Parse(dt2.Rows[0]["Xoa"].ToString());
                    f_InBaoCao = int.Parse(dt2.Rows[0]["InBaoCao"].ToString());
                    f_XemTatCa = int.Parse(dt2.Rows[0]["XemTatCa"].ToString());
                }
                if (f_SuDung.Equals(1))
                {
                    Title = "Quản lí người dùng | " + Header;
                    LoadTramTron();
                    LoadNhomNguoiDung();
                    btnCancel_Click(sender, e);
                }
                else
                    gstGetMess("Bạn không có quyền xem trang này", "Home.aspx");
            }
        }
    }
    public void LoadTramTron()
    {
        dlTramTron.Items.Clear();
        dlTramTron.DataSource = cs.GetData("sp_xdatbltramtron_List");
        dlTramTron.DataBind();
        dlTramTron.Items.Insert(0, new ListItem("--Chọn trạm trộn--", ""));
        dlTramTron.SelectedIndex = 0;
    }
    protected void btnCancel_Click(object sender, EventArgs e)
    {
        
        GV.DataSource = cs.GetData("sp_xdanguoidung_List");
        GV.DataBind();
        txttaikhoan.Text = "";
        txttaikhoan.Focus();
        txtmatkhau.Text = "";
        txtnhaplaimk.Text = "";
        ckActive.Checked = true;
        
        drNhomnguoidung.SelectedIndex = 0;
        dlTramTron.SelectedIndex = 0;


        btnSave.Visible = true;
        btncapnhat.Visible = false;

        txtmatkhau.ReadOnly = false;
        txtnhaplaimk.ReadOnly = false;
        txttaikhoan.ReadOnly = false;
        dlTramTron.Enabled = true;
        drNhomnguoidung.Enabled = true;
    }
    public void LoadNhomNguoiDung()
    {
        drNhomnguoidung.Items.Clear();
        drNhomnguoidung.DataSource = cs.GetData("sp_xdanhomnguoidung_List");
        drNhomnguoidung.DataBind();
        drNhomnguoidung.Items.Insert(0, new ListItem("--Chọn nhóm người dùng--", ""));
        drNhomnguoidung.SelectedIndex = 0;
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (f_Them.Equals(1))
        {
            p = new SqlParameter[7];
            if (txtmatkhau.Text.Trim().Equals(txtnhaplaimk.Text.Trim()))
            {
                try
                {
                    p[0] = new SqlParameter("@IDs", Guid.NewGuid());
                    p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                    p[1] = new SqlParameter("@IDTramTron", GetGuidDrop(dlTramTron));
                    p[1].SqlDbType = SqlDbType.UniqueIdentifier;
                    p[2] = new SqlParameter("@TaiKhoan", txttaikhoan.Text.Trim());
                    p[2].SqlDbType = SqlDbType.NVarChar;
                    p[3] = new SqlParameter("@MatKhau", cs.Encrypt(txtmatkhau.Text.Trim()));
                    p[3].SqlDbType = SqlDbType.NVarChar;
                    p[4] = new SqlParameter("@IDNhomND", GetGuidDrop(drNhomnguoidung));
                    p[4].SqlDbType = SqlDbType.UniqueIdentifier;
                    p[5] = new SqlParameter("@Active", ckActive.Checked ? 1 : 2);
                    p[5].SqlDbType = SqlDbType.Int;
                    p[6] = new SqlParameter("@Del", 1);
                    p[6].SqlDbType = SqlDbType.Int;
                    cs.ExecuteNonQuerry("sp_xdanguoidung_Add", p);
                    gstGetMess("Thêm tài khoản thành công", "");
                    btnCancel_Click(sender, e);
                }
                catch (Exception ex)
                {
                    gstGetMess("Có lỗi trong quá trình lưu, xem trong file log", "");
                    cs.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNgười dùng\t" + ex.Message);
                }
            }
            else gstGetMess("Mật khẩu chưa trùng nhau", "");
        }
        else
            gstGetMess("Bạn không có quyền thêm dữ liệu trên trang này", "");
    }
    private void gstGetMess(string gstMess, string gstLink)
    {
        if (gstLink == "")
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "')", true);
        else
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "');window.location.href='" + gstLink + "'", true);

    }
    public object GetGuidDrop(DropDownList dl)
    {
        try
        {
            if (dl.SelectedIndex == 0) return DBNull.Value;
            else
            {
                Guid ID = new Guid(dl.SelectedValue);
                return ID;
            }
        }
        catch
        {
            return DBNull.Value;
        }
    }
    protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string ID = e.CommandArgument.ToString();
        hdID.Value = ID;
        Guid gID = new Guid(ID);
        p = new SqlParameter[1];
        p[0] = new SqlParameter("@IDs", gID);
        p[0].SqlDbType = SqlDbType.UniqueIdentifier;

        if (e.CommandName.Equals("Select"))
        {
            DataTable dt = cs.GetData("sp_xdanguoidung_ListByID", p);
            if (dt.Rows.Count > 0)
            {
                try
                {
                    txttaikhoan.Text = dt.Rows[0]["TaiKhoan"].ToString();
                    
                    drNhomnguoidung.SelectedValue = dt.Rows[0]["IDNhomND"].ToString();
                    dlTramTron.SelectedValue = dt.Rows[0]["IDTramTron"].ToString();
                    txttaikhoan.ReadOnly = true;
                    txtmatkhau.ReadOnly = true;
                    txtnhaplaimk.ReadOnly = true;

                    if (dt.Rows[0]["Active"].ToString() == "1")
                        ckActive.Checked = true;
                    else
                        ckActive.Checked = false;

                }
                catch (Exception ex)
                {
                    gstGetMess(ex.Message, "");
                }

            }
            btncapnhat.Visible = true;
            btnSave.Visible = false;
        }
        else
            if (e.CommandName.Equals("Del"))
            {
                if (f_Xoa.Equals(1))
                {
                    try
                    {
                        cs.ExecuteNonQuerry("sp_xdanguoidung_Del", p);
                        btnCancel_Click(sender, e);
                        gstGetMess("Xóa thành công", "");
                    }
                    catch (Exception ax)
                    {
                        gstGetMess("Có lỗi trong quá trình lưu, xem trong file log", "");
                        cs.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNgười dùng\t" + ax.Message);

                    }
                }
                else
                    gstGetMess("Bạn không có quyền xóa dữ liệu trên trang này", "");

            }
    }

    protected void btncapnhat_Click(object sender, EventArgs e)
    {
        if (f_Sua.Equals(1))
        {
            try
            {
                Guid gID = new Guid(hdID.Value);
                p = new SqlParameter[7];
                p[0] = new SqlParameter("@IDs", gID);
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                p[1] = new SqlParameter("@IDTramTron", GetGuidDrop(dlTramTron));
                p[1].SqlDbType = SqlDbType.UniqueIdentifier;
                p[2] = new SqlParameter("@TaiKhoan", txttaikhoan.Text.Trim());
                p[2].SqlDbType = SqlDbType.NVarChar;
                p[3] = new SqlParameter("@MatKhau", cs.Encrypt(txtmatkhau.Text.Trim()));
                p[3].SqlDbType = SqlDbType.NVarChar;
                p[4] = new SqlParameter("@IDNhomND", GetGuidDrop(drNhomnguoidung));
                p[4].SqlDbType = SqlDbType.UniqueIdentifier;
                p[5] = new SqlParameter("@Active", ckActive.Checked ? 1 : 2);
                p[5].SqlDbType = SqlDbType.Int;
                p[6] = new SqlParameter("@Del", 1);
                p[6].SqlDbType = SqlDbType.Int;
                cs.ExecuteNonQuerry("sp_xdanguoidung_Update", p);
                btnCancel_Click(sender, e);
                gstGetMess("Cập nhật thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình lưu, xem trong file log", "");
                cs.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNgười dùng\t" + ax.Message);
            }
        }
        else
            gstGetMess("Bạn không có quyền thêm dữ liệu trên trang này", "");
    }
}